package com.xyf.sys.service;

import com.xyf.sys.domain.Role;
import com.xyf.sys.domain.SysOrderLogistics;
import com.xyf.sys.enums.LogisticsEventEnum;
import com.xyf.sys.vo.LogisticsListRequest;
import com.xyf.sys.vo.OrderListRequestVo;
import com.xyf.sys.vo.OrderVo;
import io.swagger.models.auth.In;

import java.util.List;

/**
 * @Author R-H
 * @Date 2024/4/181921
 * @Description
 */
public interface IOrderLogisticsService {

    int save(SysOrderLogistics sysOrderLogistics);

    List<SysOrderLogistics> getList(String orderId);

    boolean addOrderLogistics(String orderId, String orderProductId, Integer eventType, String userId, Long deptId, boolean first);

    boolean addOrderLogistics(boolean refund, String orderId, String orderProductId, Integer eventType, String userId, Long deptId);

    SysOrderLogistics getUserOrderLogistics(String orderId, String orderProductId, Integer eventType, String userId, Long deptId);

    boolean newLogistics(String orderId, String orderProductId, Integer eventType, String userId, Long deptId, Boolean refund);

    Integer countUserUpdateTimes(String userId, Long detpId, String orderId, String orderProductId);

    List<OrderVo> getLogisticsOrderList(LogisticsListRequest request);

    boolean checkExistsPreLogistics(String orderId, Integer eventType, boolean first);

    LogisticsEventEnum getEvent(String orderId, String orderProductId, Long roleId, String userId, Long deptId);

    Integer getLatestOrderEventType(String orderId);

    Integer getLatestOrderProductEventType(String orderId, String orderProductId);

    Integer getNextEvent(String orderId);
}
